Loading...
 

Aproksymacja na siatce z wiszącymi węzłami

Problem aproksymacji na siatce z wiszącymi węzłami został dokładnie przedstawiony w pracy [1].
Rozważmy teraz przypadek siatki, w której mamy jeden duży element \( [0,2]\times[1,3] \) oraz dwa małe elementy \( [0,1]\times[0,1] \) oraz \( [0,1]\times[1,2] \).
Najprostszy sposób skonstruowania funkcji bazowych na takich elementach to liniowe funkcje B-spline (które defakto odpowiadają liniowym wielomianom Lagrange'a).
Uzyskujemy je poprzez rozpięcie wektorów węzłów [0 0 1 1 2 2] w kierunu osi \( x \) oraz [0 0 1 1] w kierunku osi \( y \)y, dla dwóch małych elementów oraz [0 0 2 2] w kierunku osi \( x \) oraz [1 1 3 3] w kierunku osi \( y \).
Zauważmy że nasze wektory węzłów [0 0 1 1 2 2] oraz [0 0 1 1] rozpinają następujące funkcje bazowe \( B^x_{1;1}(x),B^x_{2;1}(x), B^x_{3;1}(x); B^y_{1;1}(y),...,B^y_{1;2}(y) \) na małych elementach, co poprzez ich przemnożenie (skonstruowanie iloczynu tensorowego) daje dwuwymiarowe funkcje bazowe \( B^x_{1;1}(x)B^y_{1;1}(y), B^x_{1,1}(x)B^y_{1;2}(y), B^x_{2;1}(x)B^y_{1;1}(y), B^x_{2,1}(x)B^y_{1;2}(y) \) na pierwszym małym elemencie, oraz \( B^x_{2;1}(x)B^y_{1;1}(y), B^x_{2,1}(x)B^y_{1;2}(y), B^x_{3;1}(x)B^y_{1;1}(y), B^x_{3,1}(x)B^y_{1;2}(y) \) na drugim małym elemencie.
Ponadto, na dużym elemencie nasze wektory węzłów [0 0 2 2] i [1 1 3 3] rozpinają funkcje bazowe \( B^x_{4;1}(x),B^x_{5;1}(x);B^y_{3;1}(y),...,B^y_{4;2}(y) \). Iloczyn tensorowy tych jednowymiarowych funkcji bazowych daje następujące dwuwymiarowe funkcje bazowe \( B^x_{4;1}(x)B^y_{3;1}(y), B^x_{4,1}(x)B^y_{4;2}(y), B^x_{5;1}(x)B^y_{3;1}(y), B^x_{5,1}(x)B^y_{4;2}(y) \).
Oznaczmy przez \( B_1^{small1} \) zawężenie funkcji bazowej
\( B^x_{1;1}(x)B^y_{2;1}(y) \) do wspólnej krawędzi na pierwszym małym elemencie Rys. 1, oraz przez \( B_1^{small2} \) zawężenie funkcji bazowej \( B^x_{2;1}(x)B^y_{2;1}(y) \) do wspólnej krawędzi na drugim małym elemencie Rys. 1.
Oznaczmy również przez \( B_1^{big} \) zawężenie funkcji bazowej \( B^x_{4;1}(x)B^y_{3;1}(y) \) do wspólnej krawędzi na dużym elemencie Rys. 1.
Oznaczmy przez \( B_2^{small1} \) zawężenie funkcji bazowej \( B^x_{2;1}(x)B^y_{2;1}(y) \) do wspólnej krawędzi na pierwszym elemencie Rys. 2, oraz przez \( B_2^{small2} \) zawężenie funkcji bazowej \( B^x_{3;1}(x)B^y_{2;1}(y) \) do wspólnej krawędzi na drugim elemencie Rys. 2.
Oznaczmy również przez \( B_2^{big} \) zawężenie funkcji bazowej \( B^x_{5;1}(x)B^y_{3;1}(y) \) do wspólnej krawędzi na dużym elemencie Rys. 2.

Pierwsza duża i pierwsze dwie małe funkcje bazowe na granicy jednego dużego i dwóch małych połamanych elementów.
Rysunek 1: Pierwsza duża i pierwsze dwie małe funkcje bazowe na granicy jednego dużego i dwóch małych połamanych elementów.
Druga duża i następne dwie małe funkcje bazowe na granicy jednego dużego i dwóch małych połamanych elementów.
Rysunek 2: Druga duża i następne dwie małe funkcje bazowe na granicy jednego dużego i dwóch małych połamanych elementów.

Powstaje wówczas następujący problem. Jeśli chcemy aproksymować jakąś funkcję ciągłą (na przykład pole skalarne temperatury) nad taką siatką obliczeniową, nasza aproksymacja powinna być ciągła. W przypadku grup elementów jednorodnego rozmiaru, funkcje bazowe B-spline rozpinają się w sposób naturalny na wielu elementach, i aproksymacja na granicach elementów jest naturalnie ciągła. W przypadku elementów podzielonych na mniejsze elementy, które dzielą krawędzie z większym elementem, tak jak ma to miejsce w naszym przypadku, mamy szereg lokalnych funkcji na dużym i małych elementach, które nie dość że nie są ze sobą posklejane poprzez krawędź, to jeszcze jest ich różna liczba z jednej i z drugiej strony, i mają one inne wykresy nad współdzieloną krawędzią.
Wierzchołek pomiędzy dwoma małymi elementami na wspólnej krawędzi, znajdujący się na środku dużego elementu nazywa się wiszącym węzłem (ang. hanging node) lub związanym węzłem (ang. constrained node). Jest tak dlatego, że funkcje bazowe które są nad nim rozpięte na małych elementach, muszą zostać użyte do dostosowania aproksymacji dla dużej funkcji bazowej na dużym elemencie. W jaki sposób wykonujemy takie "dostosowanie"?
W naszym przypadku używamy lokalnych funkcji bazowych na małych elementach do zamapowania odpowiadających im dużych funkcji bazowych na dużych elementach.
W naszym przypadku, wystarczy zamapować funkcje \( B_1^{big}(x,y) \) poprzez kombinację liniową funkcji \( B_1^{small1}(x,y),B_1^{small2}(x,y),B_2^{small1}(x,y),B_2^{small2}(x,y) \). Innymi słowy musimy znaleźć takie współczynniki \( b_1^{small1},b_1^{small2},b_2^{small1},b_2^{small2} \) żeby \( B_1^big(x,y) =b_1^{small1}B_1^{small1}(x,y)+b_1^{small2}B_1^{small2}(x,y)+b_2^{small1}B_2^{small1}(x,y)+b_2^{small2}B_2^{small2}(x,y) \), dla \( x\in(0,2)y=1 \) czyli rozpiętych na wspólnej krawędzi.Proces ten zilustrowany jest na Rys. 3. Widać tutaj że kombinacja ta to \( B_1^big(x,y) =1.0*B_1^{small1}(x,y)+0.5*B_1^{small2}(x,y)+0.5*B_2^{small1}(x,y) \), czyli 1.0, 0.5, 0.5, 0.0.
Ponadto musimy zamapować funkcje \( B_2^{big}(x,y) \) poprzez kombinację liniową funkcji \( B_1^{small1}(x,y),B_1^{small2}(x,y),B_2^{small1}(x,y),B_2^{small2}(x,y) \). Innymi słowy musimy znaleźć takie współczynniki \( c_1^{small1},c_1^{small2},c_2^{small1},c_2^{small2} \) żeby \( B_2^big(x,y) =c_1^{small1}B_1^{small1}(x,y)+c_1^{small2}B_1^{small2}(x,y)+c_2^{small1}B_2^{small1}(x,y)+c_2^{small2}B_2^{small2}(x,y) \), dla \( x\in(0,2)y=1 \) czyli rozpiętych na wspólnej krawędzi. Proces ten zilustrowany jest na Rys. 4. Widać tutaj że kombinacja ta to \( B_2^big(x,y) =0.5*B_1^{small2}(x,y)+0.5*B_2^{small1}(x,y)+1.0*B_2^{small2}(x,y)+ \), czyli 0.0, 0.5, 0.5, 1.0.

Pierwsza duża funkcja bazowa uzyskana przez scalenie małych funkcji bazowych.
Rysunek 3: Pierwsza duża funkcja bazowa uzyskana przez scalenie małych funkcji bazowych.
Druga duża funkcja bazowa uzyskana przez scalenie małych funkcji bazowych.
Rysunek 4: Druga duża funkcja bazowa uzyskana przez scalenie małych funkcji bazowych.

Ostatnio zmieniona Czwartek 30 z Czerwiec, 2022 09:56:15 UTC Autor: Maciej Paszynski
Zaloguj się/Zarejestruj w OPEN AGH e-podręczniki
Czy masz już hasło?

Hasło powinno mieć przynajmniej 8 znaków, litery i cyfry oraz co najmniej jeden znak specjalny.

Przypominanie hasła

Wprowadź swój adres e-mail, abyśmy mogli przesłać Ci informację o nowym haśle.
Dziękujemy za rejestrację!
Na wskazany w rejestracji adres został wysłany e-mail z linkiem aktywacyjnym.
Wprowadzone hasło/login są błędne.